package homework;

import java.util.Scanner;

/**
 * 251集的作业合集
 */
public class hw251 {
    public static void main(String[] args) {
//        new hw251().test();
        new PassObject().printAreas(new Circle(),5);

    }
    public void test(){
        System.out.println(method(method(10.0,20.0),100));
    }

    /**
     * 11. 在测试方法中，调用method方法，代码如下，编译正确，试写出method方法的
     * 定义形式，调用语句为：System.out.println(method(method(10.0,20.0),100);
     * 分析：
     * 括号里边[绝对少了括号]
     * method(method(10.0,20.0),100
     * 里面
     * method(10.0,20.0)
     * 说明method(double,double) 返回值也是double
     *
     */
    public double method(double num1 ,double num2){
        System.out.println("num1:"+num1);
        System.out.println("num2:"+num2);
        return num1+num2;
    }


}

/**
 * 有个人 Tom 设计他的成员变量.成员方法，可以电脑猜拳.
 * 电脑每次都会随机生成0, 1, 2
 * 0表示石头，1表示剪刀，2表示布
 * 并要可以显示Tom的输赢次数(清单)
 * 赢得逻辑：
 *      tom，电脑
 *      石头0，剪刀1
 *      剪刀1，布
 *      布2，石头0
 *
 */
class Tom{
    //赢得次数
    int win;
    //输的次数
    int fail;
    public static void main(String[] args) {
        Tom tom = new Tom();
        Scanner sc = new Scanner(System.in);
        System.out.println("石头剪刀布游戏开始,输入-1退出");
        while (true){
            System.out.println("请输入你出的值，0表示石头，1表示剪刀，2表示布,-1退出游戏");
            int nextInt = sc.nextInt();
            if(nextInt == -1){
                tom.print();
                break;
            }
            tom.judge(nextInt);
        }

    }

    /**
     *
     * @param n tom出的值，0，1，2
     */
    public void judge(int n){
        //电脑的值,随机的返回0,1,2
        int k = (int)(Math.random()*3);
        /**
         *   赢得逻辑：
         *       tom，电脑
         *       石头0，剪刀1
         *       剪刀1，布2
         *       布2，石头0
         */
        System.out.println("电脑的值为："+k);
        if(n==k){
            System.out.println("本局平局");
        }else if(n==0 && k==1|| n==1 && k==2 || n==2 && k==0){
            System.out.println("你赢了");
            this.win++;
        }else{
            System.out.println("电脑赢了");
            this.fail++;
        }
    }
    public void print() {
        //打印输赢清单
        System.out.println("你赢了"+this.win+"次，你输了"+this.fail+"次");
    }
}
/*
 13.将对象作为参数传递给方法。 Homework13.java
题目要求：
(1)定义一个Circle类，包含一个double型的radius属性代表圆的半径，一findArea()
方法返回圆的面积。
(2)定义一个类PassObject，在类中定义一个方法printAreas()，该方法的定义如下：
public void printAreas(Circle c, int times)
//方法签名
(3)在printAreas方法中打印输出1到times之间的每个整数半径值，以及对应的面积。
例如，times为5，则输出半径1，2，3，4，5，以及对应的圆面积。
(4)在main方法中调用printAreas()方法，调用完毕后输出当前半径值。程序运行结果
如图所示
 */
class Circle{
    double radius;
    public double findArea(){
        return Math.PI*radius*radius;
    }
}
class PassObject{
    public void printAreas(Circle c, int times){
        for (int i = 1; i <= times; i++) {
            c.radius = i;
            System.out.println("半径为："+c.radius+"，面积为："+c.findArea());
        }
    }
}
/**
 * 12. 创建一个Employee类， 属性有（名字，性别，年龄，职位，薪水），提供3个构造
 * 方法，可以初始化（1)（名字，性别，年龄，职位，薪水)，（2)（名字，性别，年龄）（3）
 * (职位,薪水),要求充分复用构造器Homework12.java
 */
class Employee{
    String name;
    String gender;
    int age;
    String position;
    double salary;

    public Employee(String name, String gender, int age, String position, double salary) {
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.position = position;
        this.salary = salary;
    }
    public Employee(String name, String gender, int age){
        this(name,gender,age,null,0);
    }
    public Employee(String position, double salary){
        this(null,null,0,position,salary);
    }

}

/**
 * 7,设计一个Dog类,有名字、颜色和年龄属性,定义输出方法show()显示其信息。
 * 并创建对象，进行测试、【提示 this.属性】 Homework07.java
 */
class Dog{
    String name;
    String color;
    int age;

    public static void main(String[] args) {
        Dog dog = new Dog("小黑", "黑色", 2);
        dog.show();
    }
    public Dog (String name, String color, int age){
        this.name = name;
        this.color = color;
        this.age = age;
    }
    public void show(){
        System.out.println("name:"+name+" color:"+color+" age:"+age);
    }
}

/**
 * 6·编程创建一个Cale计算类，在其中定义2个变量表示两个操作数，定义四个方法实
 * 现求和、差、乘、商(要求除数为0的话，要提示)并创建两个对象，分别测试
 */
class Cale{
    public static void main(String[] args) {
        Cale cale = new Cale();
        cale.add(1,2);
        cale.sub(1,2);
        cale.mul(1,2);
        cale.div(1,2);
    }

    public void add(int num1,int num2){
        System.out.println(num1+"+"+num2+"="+(num1+num2));
    }
    public void sub(int num1,int num2){
        System.out.println(num1+"-"+num2+"="+(num1-num2));
    }
    public void mul(int num1,int num2){
        System.out.println(num1+"*"+num2+"="+(num1*num2));
    }

    /**
     *
     * @param num1 被除数
     * @param num2 除数
     */
    public void div(int num1,int num2){
        if(num2==0){
            System.out.println("除数不能为0");
        }else {
            System.out.println(num1+"/"+num2+"="+((double)num1/num2));
        }
    }

}

/**
 * 4.编写类A03，实现数组的复制功能copyArr，输入旧数组，返回一个新数组，元素和
 * 旧数组一样 Homework04.java
 * I
 */
class A03{
    public static void main(String[] args) {
        int[] oldArr = new int[]{1,2,3,4,5};
        int[] newArr = new A03().copyArr(oldArr);
        System.out.println("==新数组==");
        for (int i = 0; i < newArr.length; i++) {
            System.out.print(newArr[i]+" ");
        }
        System.out.println();
    }
    public int[] copyArr(int[] oldArr){
        int[] newArr = new int[oldArr.length];
        for (int i = 0; i < oldArr.length; i++) {
            newArr[i]=oldArr[i];
        }
        return newArr;
    }
}
class Book{
    String name;
    int price;
    public Book(String name, int price) {
        this.name = name;
        this.price = price;
    }
    public static void main(String[] args) {
        Book book = new Book("java技术卷", 101);
        book.updatePrice();
        System.out.println(book.name + "的价格为:" + book.price);
    }
    /**
     * 3·编写类Book,定义方法updatePrice,实现更改某本书的价格,具体:如果价格
     * >150,则更改为150，如果价格>100,更改为100，否则不变 Homework03.java
     */
    public void updatePrice(){
        if(this.price>150){
            this.price = 150;
        }else if(this.price>100&&this.price<=150){
            this.price = 100;
        }
    }
}
class A02{
    public static void main(String[] args) {
        new A02().find(new String[]{"a","b","c"},"b");
    }
    /**
     * 2.编写类A02，定义方法find，实现查找某字符串数组中的元素查找，并返回索引，
     * 如果找不到，返回-1.Homework02.java
     * @param strs 字符串数据
     * @param str  要查找的字符串
     * @return
     */
    public int find(String[] strs ,String str){
        int index = -1;
        for (int i = 0; i < strs.length; i++) {
            if(strs[i].equals(str)){
                index = i;
            }
        }
        if(index !=-1){
            System.out.println("在数组中找到了了"+str+"索引为："+index);
        }else {
            System.out.println("数组中没有找到"+str);
        }


        return index;
    }
}
